This invention relates to error correcting code techniques.
Error correcting code techniques are used in digital systems to correct and detect errors in digital data. Such techniques are particularly employed with magnetic disks that can have relatively high error rates due to manufacturing defects and so forth. Several types of error correcting techniques are known. One type of error correcting technique uses so-called xe2x80x9cblock codes.xe2x80x9d An example of a block code is the so-called xe2x80x9cReed Solomon (RS) code.xe2x80x9d Block codes such as the Reed-Solomon block code operate on data symbols. Data symbols are vectors of binary bits of data. Symbols are generated by grouping bits at a particular bit position for a group of words into a vector. When block codes are used in a disk drive, before a string of data symbols are recorded on a disk, the string is mathematically encoded producing error correcting code symbols that are appended to the data symbols to form code words. These code words i.e., data symbols and error correcting code symbols are stored on the disk. When the stored data is retrieved from the disk, the code words are mathematically decoded to form decoded code words.
Multiple data errors in the data symbols can be corrected if the number of such data errors does not exceed the maximum number of errors for which the algorithm was designed. Currently, most decoding schemes use so-called xe2x80x9chard decoding.xe2x80x9d Hard decoding is a technique in which each symbol of a corrupted code word has exactly the same measure of reliability as each other symbol. For the sake of convenience, generally the measure of reliability of each symbol is assigned a value of one. A second technique, so-called xe2x80x9csoft-decision decodingxe2x80x9d uses a unique measure of reliability for each symbol. Each symbol is assigned a unique value between 0 and 1 or any range of values. The soft decision decoding algorithms, although capable of correcting more errors and therefore being more robust and of higher performance, tend to be very complicated. Therefore, practical implementations of soft-decision decoding tend to be slow or if sufficient hardware is used to increase speed, expensive and thus often impractical.
According to an aspect of the present invention, a method an apparatus for decoding a corrupted code word includes decoding the corrupted code word with a first decoder that has a common measure of reliability for each symbol of the code word and determining whether a useful result can be obtained from the first decoder. If a useful result can not be obtained, decoding the corrupted code word with a second decoder that uses unique values of reliability for each symbol of the corrupted code word.
One or more of the following advantages are provided. Hard decoding can be used for most error occurrences and the slower soft-decision decoding can be used for the less frequent occurrences. This would improve overall performance. Optionally the hard-decoding can be designed to handle fewer errors than its maximum amount. In other words, the implemented hard-decoder may not have to fully or completely implement the error correcting capability of a selected hard-decoding algorithm. The hard decoding only needs to correct the most likely number of errors, e.g., one or two per symbol, and leave the less likely larger number of errors to the soft decision decoding. By correcting only a fraction of the symbol errors correctable by a full hard-decoder implementation it would save hardware and be faster overall, by letting the soft decision decoding correct the less frequent but higher number of errors.